The present invention relates generally to 3D animated content, and more particularly, to a system and method for creating and controlling gesture animation of 3D objects within the 3D animated content.
With the convergence of various media platforms, it is becoming increasingly common for companies to cash in on a successful product on one platform by developing a version of the product for another platform. For instance, a company with a successful video game may wish to make a three-dimensional (3D) movie featuring the characters used in the video game for distribution as a television series.
Due to the different requirements and incompatible nature of the various delivery platforms, it is usually necessary to completely redo much of the artwork for the new medium. For instance, a 1000-polygon model of a 3D object created for the video game version may not be usable for the television version of the product. One reason for this may be due to incompatible data formats. The 3D model used for the video game version may not be readable by the software used to create and animate a television version.
Redevelopment for the new medium may also be required due to incompatible resolutions. A 1000-polygon model that was developed and optimized for a video game may be unacceptably chunky and low-resolution for its television version.
A third reason for the redevelopment of 3D models and artwork might be incompatible animation. The preset xe2x80x9cmovesxe2x80x9d used for a video game may not be useable for the television version where pre-scripted, fully animated character movement is required.
Redevelopment of 3D models and artwork might also be required due to the incompatibility of the 3D modeling and animation tools used for different media. Although modern computers provide effective tools for producing 3D animated content for various media platforms, the programming, modeling, animation and publishing tools used for PC, Internet and television production are frequently incompatible with each other. Thus, multiple sets of development software packages have to be purchased with the attendant issues of cost and difficulty of converting data between the various platforms.
The combination of problems listed above has meant that in general, it is possible to reuse as little as 10% of the assets of a 3D content when developing a version of that content for a different platform.
Problems also arise when creating animated content for distribution to different target machines within the same medium due to their different performance capabilities. For instance, highest-end PCs are capable of rendering high-quality graphics while lower-end PCs are not be capable of rendering such high graphics quality. Because the target machine on which a 3D content will ultimately be rendered is rarely known, two strategies have been utilized to address this issue. One of the strategies is to build the 3D content to have adequate performance on the lowest-end PC to ensure that the 3D content is capable of being played by all types of PCs. With this strategy, the 3D content will perform well on low-end PCs, but the design of the graphics will not meet the expectations of high-end PC owners.
A second strategy is to build the 3D content to perform adequately on mid- to high-end PCs. In this case, the mid- to high-end PC owners will be satisfied with copious high-quality graphics, but a large fraction of the market with low-end PCs may be unable to play the 3D content.
In addition to the above, the creation of 3D animated content using conventional systems and methods is a painstaking and difficult process. For example, any changes made to a 3D object appearing in one scene of a 3D animated content must be made in all the scenes in which the character appears in order for the change to be reflected in those scenes. Furthermore, because animation data is scene specific, animation data created for one particular scene is not shared among the other scenes. Thus, pieces of animation data created for a first scene must be reiterated and stored for a second scene in order for that data to be used by the second scene.
Furthermore, the streaming of 3D animated content over the Internet using conventional systems and methods for real-time playback is fraught with difficulties. One approach used in the prior art for streaming data over the Internet include unlimited read-ahead methods where data is read ahead of the playback position, and attempt is made to pre-fetch as much data as possible. However, this approach is limited in use for multipath movies that have many plot alternatives, or paths, that are influenced by a user""s interaction with the movie. Data for a multipath movie may be pre-fetched only up to the point when a user interaction is required. Data beyond this point may not be pre-fetched because it is not possible to predict what scene will be played next, and thus, what data is going to be required next.
Another approach used in the prior art for streaming Internet data is to use a just-in-time approach where data is received just in time to be played. However, this technique falls victim to the vagaries of the Internet. Data rates available for delivering 3D animated content are often inconsistent in nature. The data rate may average 2 Kbps, but there may be times when data is being received at 3 Kbps or no data is being received at all. The failure of the required data to be arrived in time causes pauses in the playback of the animated content.
Accordingly, there is a need for a 3D animation tool that will allow the creation of 3D animated content for different media without engaging in separate development processes. Such tool should allow 3D models and artwork created for one medium to be reused in a different medium. Such a tool should also allow the creation of scalable content for allowing the display of one type of graphics for one kind of target machine and a different type of graphics for a different kind of target machine.
There is also a need for a 3D animation tool that will facilitate the replacement and modifications of 3D objects, as well as allow the re-use of frequently occurring pieces of animation data among the scenes of a movie. Furthermore, there is a need for a system and method for facilitating the streaming of 3D animated content over the Internet for real-time playback. Such system and method should not only provide a streaming technique for multipath movies, but also provide for animation data reduction techniques for reducing the amount of data to be delivered over the Internet.
The present invention addresses and alleviates the above-mentioned deficiencies associated with the prior art. More particularly, the present invention facilitates the production, processing, and Internet distribution of 3D animated content.
In accordance with one aspect of the invention, the animation and texture data of the 3D animation content is optimized to reduce the size of the animation data to be streamed over the Internet. The system and method according to this second aspect of the invention gathers statistical information about the nodes and textures being utilized in each frame of the animated content. In doing so, the system and method determines if a particular node and any of its children nodes are outside the view frame. If they are, then the animation data associated with the node is removed.
In a particular aspect of this invention, if the node is within the view frame and is further not obscured by any other node, the system and method includes obtaining a distance to the node from a view plane and removing the animation data based on the obtained distance. The animation for the nodes that appear at a distance are allowed to be more inaccurate, allowing the removal of more of the animation data, than the nodes that are closer to the view frame.
The system and method for optimizing the texture data includes removing the texture data associated with a node if the node is outside the view frame or is obscured by the other nodes. If the node is within the view frame the size of the texture map maintained depends on the amount of magnification of the texture map when rendered on a screen space. Accordingly, the system and method includes retrieving the texture map of the polygon making up the node, and rendering the polygon according to the retrieved texture map onto a screen space. The system and method further includes computing a ratio of pixels in the texture map to pixels on the screen space. The computed ratio indicates the amount of magnification of the texture map on the screen space. The computed ratio is compared with a magnification value stored in a texture map array. If the computed ratio indicates a bigger magnification of the texture map than the stored magnification value, the stored magnification value is replaced with the computed ratio. In this way, the texture map array maintains the current maximum magnification of the texture map. After all the frames of the animated content have been analyzed, the texture map is recreated according to the magnification value in the texture map array.